iT邦幫忙

2025 iThome 鐵人賽

DAY 11
1
Security

江湖在走,數位憑證要懂,懂得天天吃滷肉飯系列 第 11

第11天,數位簽章介紹與應用 / 富霸王豬腳 超好吃豬腳(台北中山) | 30天滷肉飯

  • 分享至 

  • xImage
  •  

在現代資訊安全架構裡,數位簽章是保障「資料真實性、完整性與不可否認性」的核心技術。它就像紙本世界的簽名或蓋章,但更強大且可驗證。

數位簽章主要解決三個問題:

  1. 身份驗證 (Authentication)
    驗證簽署者的身份,確定這份文件確實來自某個人或機構。

  2. 完整性 (Integrity)
    確保文件內容在傳輸過程中沒有被竄改。任何一個字元的變化都會導致簽章驗證失敗。

  3. 不可否認性 (Non-repudiation)
    簽署者事後無法否認曾簽署這份文件,因為簽章是透過其私鑰產生的。

應用場景非常多:電子發票、電子病歷、線上報稅、政府公文交換平台 (G2G)、企業電子合約簽署,甚至軟體發佈(例如 Windows driver 需要數位簽章才能被信任安裝)。

數位簽章的基本原理

  1. 產生雜湊值

    • 將原始文件內容丟進雜湊函數(如 SHA-256)。
    • 產生一組固定長度的 訊息摘要 (Message Digest),這組值能唯一代表文件內容。
    • 特性:只要文件改動哪怕一個字元,摘要就會完全不同。
  2. 產生簽章值

    • 簽署者使用自己的 私鑰 (Private Key),對「雜湊值」進行加密。
    • 得到的加密結果,就是所謂的 簽章值 (Signature Value),此流程依照 PKCS#1 規範。
    • 注意:這一步只會產生一段「加密後的雜湊」,並不包含原始文件或憑證。
  3. 建立封裝格式

    • 為了讓接收者能順利驗證,簽章值需要跟相關資訊一起「打包」。
    • 常見的封裝格式是 PKCS#7 / CMS,其內容可以包含:
      • 原始文件或其雜湊值
      • 簽章值 (由私鑰產生)
      • 簽署者的憑證 (X.509 Certificate)
      • 使用的演算法資訊(例如 SHA-256 與 RSA)
    • 這樣的封裝檔案(例如 .p7s, .p7m)就能在不同系統之間傳遞與驗證。
  4. 驗證數位簽章(驗簽)

    • 接收者取出封裝裡的簽署者憑證,拿到公開金鑰。
    • 用公開金鑰解開簽章值,還原出原本的雜湊值。
    • 接收者再用相同的雜湊演算法,對收到的文件重新計算一次摘要。
    • 兩者比對:
      • 一致 → 簽章有效,文件未被竄改,且確實來自簽署者。
      • 不一致 → 文件被改過或簽章不合法。

https://ithelp.ithome.com.tw/upload/images/20250925/201634169AL4x8yjUP.png
https://zh.wikipedia.org/zh-tw/%E6%95%B8%E4%BD%8D%E7%B0%BD%E7%AB%A0

常見的數位簽章格式

在實務應用中,數位簽章通常不會只是一串「加密後的雜湊」,而是依循標準格式,方便跨系統交換與驗證。

1. PKCS#7 / CMS (Cryptographic Message Syntax)

  • 由 RSA 定義的 Public Key Cryptography Standards (PKCS) 之一。
  • PKCS#7 定義了簽章訊息的封裝格式,後來被標準化為 CMS (RFC 5652)
  • 可包含:
    • 簽署者證書 (X.509)
    • 原始訊息或僅摘要
    • 多重簽章(多人共同簽署)
  • 常見於:
    • Windows .p7s.p7m 檔案
    • 軟體簽章 (Microsoft Authenticode)
    • S/MIME 郵件簽章

2. PKCS#1 (RSA Signature)

  • 僅限於 RSA 演算法的簽章格式。
  • 沒有像 PKCS#7 那樣的「封裝能力」,多用於低階簽章驗證。

3. XML Signature (XMLDSig)

  • W3C 制定,用於 XML 文件。
  • 廣泛用於 SOAP、SAML、電子發票等需要結構化資料交換的場景。

4. JSON Web Signature (JWS)

  • 基於 JWT 標準 (RFC 7515),常用於 API 驗證、OIDC、OAuth。
  • 格式輕量,適合 Web 應用。

範例:PKCS#7 簽章結構

一個典型的 PKCS#7 簽章檔案,內部會包含以下元素:

  • SignedData:主要資料結構

    • version:版本
    • digestAlgorithms:使用的雜湊演算法 (SHA-256)
    • encapContentInfo:原始訊息(或摘要)
    • certificates:簽署者的憑證鏈 (X.509)
    • signerInfos:每個簽署者的簽章資訊(簽章值、演算法、簽署時間等)

換句話說,PKCS#7 不僅保存「簽章」,還能同時保存「簽署者憑證」與「原始資料」,方便日後驗證。

小結

數位簽章是資訊安全裡的基礎積木,解決「你是誰」與「這份文件有沒有被動過」的問題。無論是政府、金融、醫療,甚至日常使用的軟體更新,都依賴數位簽章保障信任。

富霸王豬腳

  • 店名:富霸王豬腳
  • 地址:台北市中山區南京東路二段115巷20號
  • 營業時間:周二到六 11:00–19:30
  • Google Maps
  • 本系列地圖

https://ithelp.ithome.com.tw/upload/images/20250925/20163416ZHwPediuZM.jpg

富霸王是台北市非常知名的店,每次去都一定大排長龍,這次晚餐時間去買,豬腳就只剩下腳蹄,其他都賣完了,豬腳、滷肉飯也好吃,推薦。

https://ithelp.ithome.com.tw/upload/images/20250925/201634168gOATb4ERo.jpg


上一篇
第10天,X.509 與 ASN.1 / 夯・魯肉飯(台北信義) | 30天滷肉飯
下一篇
第12天,實作無封裝數位簽章 / 店小二魯肉飯 號稱第二的滷肉飯(新北三重) | 30天滷肉飯
系列文
江湖在走,數位憑證要懂,懂得天天吃滷肉飯14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言